

import pandas as pd
import warnings

运行记录表路径 = '../文件/运行记录表202409091640.xlsx'
warnings.filterwarnings('ignore')

pd.set_option('display.max_columns', None)
readExcel = pd.read_excel(运行记录表路径, dtype=str)
# print(readExcel)
print(f'本次读取到运行记录表中共有{len(readExcel)}条数据')
#把读取的结果存成dateframe，方便用于后面的数据结果写入
# 表头 = readExcel.columns.tolist()
# 运行记录数据 = readExcel.values.tolist()
# print(表头)
# print(运行记录数据)
# 读取其中'采购价格核对结果'为成功的数据，并且创建状态不是为成功或者失败状态的
successDate = readExcel[(readExcel['采购价格核对结果'].isin(['成功'])) & ~(readExcel['创建状态'].isin(['成功','失败']))]
# 将'供方代码','供方名称'提取出来并整理成列表
proNumber = successDate[['供方代码', '供方名称']]
proNumberDate = proNumber.groupby(['供方代码']).agg({'供方代码': 'first', '供方名称': 'first'}).reset_index(
    drop=True)
proNumberDateList = proNumberDate.values.tolist()
# 遍历列表中的数据,并整理成一个map:{'供方代码':[['采购申请号','行项目','供方名称']...]}的形式
proNumberMap = {}
for item in proNumberDateList:
    result = successDate[successDate['供方代码'].isin([item[0]])]
    # resultDateList=result[['采购申请号', '行项目', '供方名称']].values.tolist()
    # proNumberMap.setdefault(item[0],resultDateList)
    resultDate=result[['工厂','采购申请号', '行项目', '供方名称']]
    print(resultDate)
    # print(resultDate.values.tolist())
    # 按照列'工厂'进行分组
    grouped=resultDate.groupby(['工厂'])
    # 输出每个组的统计信息
    proMap = {}
    for name, group in grouped:#同一工厂的数据进行存储为{工厂：[list1,list2...]}
        # print(f'工厂为{name}')
        proMap.setdefault(name, group.values.tolist()) #代码不同这里取Name 而不是name[0]
    proNumberMap.setdefault(item[0],proMap)

print(proNumberMap)